import {VNode} from "vue"


export namespace IElem {
    // 
    export interface Props {
        tag?:Tag
        attr?:Attrs
        children?:Children
        setup?:Setup
        params?:any
    }
    // 
    export type Elem = [Tag] | [Tag,Attrs] | [Tag,Children] | [Tag,Attrs,Children,Setup] | [Setup] | [Tag,Setup] | [Tag,Attrs,Setup] | [Tag,Children,Setup]
    export type Tag = keyof HTMLElementTagNameMap | VNode 
    export type Attrs = Record<string,any>
    export type Children = string | VNode | (VNode|string|((props:any,ctx:any) => VNode))[]
    export type Setup = () => void | Children | Record<string,any> | (() => Children) | {props:Record<string,any>,render:() => Children}
    // 
    // 
}